package SecondeStage.Collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@SuppressWarnings({"all"})
public class Collections_ {
    public static void main(String[] args) {
        // 创建ArrayList 集合，用于测试
        List list = new ArrayList();
        list.add("tom");
        list.add("smith");
        list.add("king");
        list.add("milan");
        System.out.println(list);
        System.out.println("------------------");
        // 1.reverse(List): 反转List中元素的顺序
        Collections.reverse(list);
        System.out.println(list);
        System.out.println("------------------");
        // 2.shuffle(List): 对List集合元素进行随机排序
        Collections.shuffle(list);
        System.out.println(list);
        System.out.println("------------------");
        // 3.sort(List): 根据元素的自然顺序对指定List按升序排序
        Collections.sort(list);
        System.out.println(list);
        System.out.println("------------------");
        // 4.sort(List,Comparator) : 根据指定的Comparator 产生的顺序对 List元素进行排序
        Collections.sort(list, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o1).length()-((String)o2).length();
            }
        });
        System.out.println(list);
        System.out.println("------------------");
        // 5. swap(list,i,j): 将指定list集合中的i和j元素交换
        Collections.swap(list,0,1);
        System.out.println(list);
        System.out.println("------------------");
        // 6. max(Collection): 根据元素的自然顺序，返回给定集合中的最大元素
        System.out.println("最大元素:" + Collections.max(list));
        System.out.println("------------------");
        // 7. max(Collection,Comparator) : 根据Comparator指定的顺序,返回给定集合中的最大元素
        // 比如我们要返回长度最大的元素
        Object maxObject = Collections.max(list, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o1).length()-((String)o2).length();
            }
        });
        System.out.println("长度最大的元素="+maxObject);
        System.out.println("------------------");
        // 8. min(Collection)
        // 9. min(Collection,Comparator)
        // 10. frequency(Collection,Object): 返回指定集合中某个元素出现的次数
        System.out.println("tom出现的次数:"+ Collections.frequency(list,"tom"));
        System.out.println("------------------");
        // 11. copy(List dest,List src): 将src中的内容复制到dest中
        // 为了完成一个完整拷贝，我们需要先给dest赋值，大小和list.size（）一样
        ArrayList dest =new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            dest.add("");
        }
        Collections.copy(dest,list);
        System.out.println("dest="+dest);
        System.out.println("------------------");
        // 12.replaceAll(List list,Object oldVal,Object newVal): 使用新值替换 List对象的所有旧值
        Collections.replaceAll(list,"tom","汤姆");
        System.out.println(list);
        System.out.println("------------------");
    }
}
